#ifndef __GENERAL_PROCESS_REQ_ANS__
#define __GENERAL_PROCESS_REQ_ANS__

#include "IUtility.h"
#include "IThreadPoolManager.h"
#include "IBaseBusinessOperation.h"


class CGenSevProSig : public virtual IWork
{
INIT_CLASS_PRODUCT(CGenSevProSig);
public:
    const bool Init(const void * pvdPara, char * pszMsgTxt, int iMsgTxtSize);
    void * Work();
private:
    shared_ptr<IBussinessOperation> m_ptrBussinessOperation;
    map<string, shared_ptr<IConnect>> m_mpConnect;
	shared_ptr<IPacket> m_ptrReqPkt, m_ptrAnsPkt;

private:
    IConnect * DataConnect(const char * szConnectId);

};

class CGenSevProLoop : public virtual IWork
{
INIT_CLASS_PRODUCT(CGenSevProLoop);
public:
    const bool Init(const void * pvdPara, char * pszMsgTxt, int iMsgTxtSize);
    void * Work();
private:
    shared_ptr<IBussinessOperation> m_ptrBussinessOperation;
    shared_ptr<IKcbpLbmManager> m_ptrKcbpLbmManager;

private:
    IConnect * DataConnect(const char * szConnectId);

};

class CSevOptLoop : public virtual IWork
{
INIT_CLASS_PRODUCT(CSevOptLoop);
public:
	const bool Init(const void * pvdPara, char * pszMsgTxt, int iMsgTxtSize);
	void * Work();

private:
	shared_ptr<IBussinessOperation> m_ptrBussinessOperation;
	shared_ptr<IKcbpLbmManager> m_ptrKcbpLbmManager;

private:
	IConnect * DataConnect(const char * szConnectId);
};


#endif // !__GENERAL_PROCESS_REQ_ANS__